#include "../../Common/Message.hpp"
#include "../../Common/Net.hpp"

int main()
{
    return 0;
}

// // 消息类的测试
// int main()
// {
//     // Topic请求测试
//     std::shared_ptr<RpcModule::TopicRequest> request = RpcModule::MessageFactory::CreateMessage<RpcModule::TopicRequest>();
//     request->SetTopicKey("news");
//     request->SetTopicOptype(RpcModule::TopicOptype::TOPIC_PUBLISH);

//     std::string str = request->Serialize();
//     std::cout << str << std::endl;

//     bool ret = request->UnSerialize(str);
//     std::cout << ret << std::endl;
//     // [2025-11-02 20:17:34] [Message.hpp:130] 主题操作请求：主题发布时，发送消息为空/格式错误
//     ret = request->Check();
//     std::cout << ret << std::endl;
//     return 0;
// }

// int main()
// {
//     std::shared_ptr<RpcModule::RpcRequest> rpcrequest = RpcModule::MessageFactory::CreateMessage<RpcModule::RpcRequest>();
//     Json::Value json;
//     json["num1"] = 11;
//     json["num2"] = 22;
//     rpcrequest->SetRpcParams(json);
//     rpcrequest->SetRpcMethod("Add");
//     // 1. 序列化的测试
//     std::string ret = rpcrequest->Serialize();
//     std::cout << ret << std::endl;
//     // 2. 反序列化、Check、获取方法和获取参数的测试
//     std::shared_ptr<RpcModule::BaseMessage> request1 = RpcModule::MessageFactory::CreateMessage(RpcModule::MType::REQ_RPC);
//     request1->UnSerialize(ret);
//     // dynamic_pointer_cast是C++提供的接口，支持子类对象指向父类对象的转换
//     RpcModule::RpcRequest::ptr rpcrequest1 = std::dynamic_pointer_cast<RpcModule::RpcRequest>(request1);
//     bool check = rpcrequest1->Check();
//     std::cout << check << std::endl;
//     json = rpcrequest1->GetRpcParams();
//     std::cout << json << std::endl;
//     ret = rpcrequest1->GetRpcMethod();
//     std::cout << ret << std::endl;
//     return 0;
// }

// int main()
// {
//     for(int i = 0; i<10; i++)
//     {
//         std::cout << UUID::GetUuid() << std::endl;
//     }
//     return 0;
// }

// int main()
// {
//     // 1. 创建出一个Json串：
//     Json::Value student;
//     const char* name = "Michael";
//     int age = 18;
//     float score[3] = {60, 40, 90};
//     student["name"] = name;
//     student["age"] = age;
//     student["sex"] = "man";
//     student["score"].append(score[0]);
//     student["score"].append(score[1]);
//     student["score"].append(score[2]);
//     Json::Value hobby;
//     hobby["book"] = "西游记";
//     hobby["sport"] = "football";
//     student["hobby"] = hobby;

//     // 2. Json串的序列化操作：
//     std::string jsonstring;
//     JSON::Serialize(student, jsonstring);
//     std::cout << jsonstring << std::endl;

//     // 3. Json串的反序列化操作
//     Json::Value retstudent;
//     JSON::UnSerialize(jsonstring, retstudent);
//     // 3.1 反序列化到Value中，直接获取结果
//     std::cout << "姓名：" << retstudent["name"].asString() << std::endl;
//     std::cout << "年龄：" << retstudent["age"].asInt() << std::endl;
//     std::cout << "性别：" << retstudent["sex"].asCString() << std::endl;
//     std::cout << "分数：" << retstudent["score"][0].asFloat() << std::endl;
//     std::cout << "爱好：" << retstudent["hobby"]["sport"].asString() << std::endl;
//     return 0;
// }